package com.dragon.modules.yuegou.model.act;

import com.dragon.modules.yuegou.entity.act.GiftEntity;
import com.dragon.modules.yuegou.enums.act.GiftCommodityType;
import com.dragon.modules.yuegou.enums.act.GiftStatus;
import com.dragon.modules.yuegou.model.coupon.CouponTemplate;
import com.dragon.modules.yuegou.model.product.Sku;
import io.swagger.annotations.ApiModelProperty;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 送礼表模型类
 * 
 * @author pbuilder generated
 * @date 2019-11-19 19:34:47
 * @company sgy
 * @version 2.0
 * @see Length 长度限制
 * @see NotNull 对象非空
 * @see NotEmpty 字符串、集合、表、数组非空
 */
public class Gift extends GiftEntity {

	@ApiModelProperty("优惠券")
	private CouponTemplate couponTemplate;

	@ApiModelProperty("商品规格")
	private Sku sku;

	@ApiModelProperty("创建人名称")
	private String createdName;

	@ApiModelProperty("商品有效期开始时间")
	private LocalDateTime spuBeginTime;

	@ApiModelProperty("商品有效期结束时间")
	private LocalDateTime spuEndTime;

	@ApiModelProperty("商圈名称")
	private String busdName;

	@ApiModelProperty("商品列表")
	private List<GiftGoodsRef> refs;

	public List<GiftGoodsRef> getRefs() {
		return refs;
	}

	public void setRefs(List<GiftGoodsRef> refs) {
		this.refs = refs;
	}

	public String getBusdName() {
		return busdName;
	}

	public void setBusdName(String busdName) {
		this.busdName = busdName;
	}

	public LocalDateTime getSpuBeginTime() {
		return spuBeginTime;
	}

	public void setSpuBeginTime(LocalDateTime spuBeginTime) {
		this.spuBeginTime = spuBeginTime;
	}

	public LocalDateTime getSpuEndTime() {
		return spuEndTime;
	}

	public void setSpuEndTime(LocalDateTime spuEndTime) {
		this.spuEndTime = spuEndTime;
	}

    public String getCreatedName() {
        return createdName;
    }

    public void setCreatedName(String createdName) {
        this.createdName = createdName;
    }

    public CouponTemplate getCouponTemplate() {
		return couponTemplate;
	}

	public void setCouponTemplate(CouponTemplate couponTemplate) {
		this.couponTemplate = couponTemplate;
	}

	public Sku getSku() {
		return sku;
	}

	public void setSku(Sku sku) {
		this.sku = sku;
	}

	/**
	 * 构造一个空送礼表模型对象
	 */
	public Gift(){
		super();
	}
	
	/**
	 * 依据实体对象的信息构造一个送礼表模型对象
	 * 
	 * @param entity 实体对象
	 */
	public Gift(GiftEntity entity){
		super(entity);
	}

	/**
	 * 依据其它对象的信息构造一个送礼表模型对象
	 * 
	 * @param other 其它对象
	 */
	public Gift(Gift other){
		super(other);
	}


	@Override
	public String getId() {
    	return id;
    }

    /**
	 * 设置
	 * 
	 * @param id 
	 * @return 当前对象
	 */
    public Gift id(String id) {
    	this.id = id;
    	return this;
    }

	@Override
	public Integer getSortNo() {
    	return sortNo;
    }

    /**
	 * 设置排序
	 * 
	 * @param sortNo 排序
	 * @return 当前对象
	 */
    public Gift sortNo(Integer sortNo) {
    	this.sortNo = sortNo;
    	return this;
    }

	@Override
	public String getBusdId() {
    	return busdId;
    }

    /**
	 * 设置商圈Id
	 * 
	 * @param busdId 商圈Id
	 * @return 当前对象
	 */
    public Gift busdId(String busdId) {
    	this.busdId = busdId;
    	return this;
    }

	@Override
	public String getActivityName() {
    	return activityName;
    }

    /**
	 * 设置活动名称
	 * 
	 * @param activityName 活动名称
	 * @return 当前对象
	 */
    public Gift activityName(String activityName) {
    	this.activityName = activityName;
    	return this;
    }

	@Override
	public String getArticleId() {
    	return articleId;
    }

    /**
	 * 设置活动物品id
	 * 
	 * @param articleId 活动物品id
	 * @return 当前对象
	 */
    public Gift articleId(String articleId) {
    	this.articleId = articleId;
    	return this;
    }

	@Override
	public GiftCommodityType getCommodityType() {
    	return commodityType;
    }

    /**
	 * 设置[枚举]活动商品类型：0-停车券-PARK_COUPON、1-代金券-VOUCHER_COUPON、2-积分-POINTS
	 * 
	 * @param commodityType [枚举]活动商品类型：0-停车券-PARK_COUPON、1-代金券-VOUCHER_COUPON、2-积分-POINTS
	 * @return 当前对象
	 */
    public Gift commodityType(GiftCommodityType commodityType) {
    	this.commodityType = commodityType;
    	return this;
    }

	@Override
	public String getCommodityName() {
    	return commodityName;
    }

    /**
	 * 设置活动商品名称
	 * 
	 * @param commodityName 活动商品名称
	 * @return 当前对象
	 */
    public Gift commodityName(String commodityName) {
    	this.commodityName = commodityName;
    	return this;
    }

	@Override
	public Integer getArticlePoints() {
    	return articlePoints;
    }

    /**
	 * 设置活动积分
	 * 
	 * @param articlePoints 活动积分
	 * @return 当前对象
	 */
    public Gift articlePoints(Integer articlePoints) {
    	this.articlePoints = articlePoints;
    	return this;
    }

	@Override
	public GiftStatus getStatus() {
    	return status;
    }

    /**
	 * 设置[枚举]活动状态：0-未开始-ABOUT_START、1-赠送中-PROCESSIONG、2-已结束-OVER
	 * 
	 * @param status [枚举]活动状态：0-未开始-ABOUT_START、1-赠送中-PROCESSIONG、2-已结束-OVER
	 * @return 当前对象
	 */
    public Gift status(GiftStatus status) {
    	this.status = status;
    	return this;
    }

	@Override
	public LocalDateTime getActivityBeginTime() {
    	return activityBeginTime;
    }

    /**
	 * 设置活动开始时间
	 * 
	 * @param activityBeginTime 活动开始时间
	 * @return 当前对象
	 */
    public Gift activityBeginTime(LocalDateTime activityBeginTime) {
    	this.activityBeginTime = activityBeginTime;
    	return this;
    }

	@Override
	public LocalDateTime getActivityEndTime() {
    	return activityEndTime;
    }

    /**
	 * 设置活动结束时间
	 * 
	 * @param activityEndTime 活动结束时间
	 * @return 当前对象
	 */
    public Gift activityEndTime(LocalDateTime activityEndTime) {
    	this.activityEndTime = activityEndTime;
    	return this;
    }

	@Override
	public String getCreatedBy() {
    	return createdBy;
    }

    /**
	 * 设置创建人ID
	 * 
	 * @param createdBy 创建人ID
	 * @return 当前对象
	 */
    public Gift createdBy(String createdBy) {
    	this.createdBy = createdBy;
    	return this;
    }

	@Override
	public LocalDateTime getCreatedTime() {
    	return createdTime;
    }

    /**
	 * 设置创建时间
	 * 
	 * @param createdTime 创建时间
	 * @return 当前对象
	 */
    public Gift createdTime(LocalDateTime createdTime) {
    	this.createdTime = createdTime;
    	return this;
    }

	@Override
	public Boolean getDel() {
    	return del;
    }

    /**
	 * 设置逻辑删除，1表示已删除,0表示未删除
	 * 
	 * @param del 逻辑删除，1表示已删除,0表示未删除
	 * @return 当前对象
	 */
    public Gift del(Boolean del) {
    	this.del = del;
    	return this;
    }

	@Override
	public String getDelBy() {
    	return delBy;
    }

    /**
	 * 设置删除人ID
	 * 
	 * @param delBy 删除人ID
	 * @return 当前对象
	 */
    public Gift delBy(String delBy) {
    	this.delBy = delBy;
    	return this;
    }

	@Override
	public LocalDateTime getDelTime() {
    	return delTime;
    }

    /**
	 * 设置删除时间
	 * 
	 * @param delTime 删除时间
	 * @return 当前对象
	 */
    public Gift delTime(LocalDateTime delTime) {
    	this.delTime = delTime;
    	return this;
    }
}
